{% extends "block/main.html" %}

{% block title %} Extend Index {% endblock %}

{% block main %}
<div class="card">
    <div class="card-body">
        <div class="input-group mb-3">
            <input type="password" class="form-control" placeholder="后台验证密钥更新" id="i-repwd">
            <div class="input-group-append">
                <button class="btn btn-outline-secondary" type="button" id="repwd">提交</button>
            </div>
        </div>

        <button id="upext" type="button" class="btn btn-danger" data-toggle="tooltip" data-placement="bottom"
            title="通过上传压缩包安装拓展">拓展上传</button>

    </div>
</div>
{% endblock %}

{% block script %}
<script src="http://open.wwsg18.com/openres/fcup.min.js"></script>
<script>
    $(function () {
        $('[data-toggle="tooltip"]').tooltip()
    })

    checker = "{{checker}}";

    $("#repwd").click(function () {
        var pwd = $("#i-repwd").val();
        if (pwd != "") {
            $.get("/@dev/api/repwd?pwd=" + pwd + "&checker=" + checker, function (res) {
                if (res.code == '200' && res.data == "OK") {
                    layer.msg("密码更新成功！");
                } else {
                    layer.msg("[" + res.code + "]：" + res.msg);
                }
            });
        }
    });

    let up = new fcup({

        id: "upext", // 绑定id

        url: "/@dev/api/upload", // url地址

        // checkurl: "/@dev/api/upload?t=check", // 检查上传url地址

        type: "zip", // 限制上传类型，为空不限制

        shardsize: "0.05", // 每次分片大小，单位为M，默认1M

        minsize: '', // 最小文件上传M数，单位为M，默认为无

        maxsize: "1024", // 上传文件最大M数，单位为M，默认200M

        // headers: {"version": "fcup-v2.0"}, // 附加的文件头,默认为null, 请注意指定header头时将不能进行跨域操作

        // apped_data: {}, //每次上传的附加数据

        // 定义错误信息
        errormsg: {
            1000: "页面加载错误，请联系管理员！",
            1001: "系统仅支持 Zip 格式的压缩拓展！",
            1002: "上传文件过小！",
            1003: "上传文件过大！",
            1004: "上传请求超时！"
        },

        // 错误提示
        error: (msg) => {
            layer.msg(msg);
        },

        // 初始化事件                
        start: () => {
            // console.log('上传已准备就绪');
        },

        // 等待上传事件，可以用来loading
        beforeSend: () => {
            // console.log('等待请求中');
        },

        // 上传进度事件
        progress: (num, other) => {
            // console.log(num);
            // console.log('上传进度' + num);
            // console.log("上传类型" + other.type);
            // console.log("已经上传" + other.current);
            // console.log("剩余上传" + other.surplus);
            // console.log("已用时间" + other.usetime);
            // console.log("预计时间" + other.totaltime);
        },

        // 上传成功回调，回调会根据切片循环，要终止上传循环，必须要return false，成功的情况下要始终返回true;
        success: (res) => {

            res = JSON.parse(res);
            var ext = res.data[1];

            if (res.data == "阶段完成") {
                return true;
            }

            if (res.data[0] != "上传成功") {
                layer.msg(res.msg);
                return false;
            }

            $.get("/@dev/api/info?ext=" + res.data[1] + "&item=NAME|VERSION|AUTHOR|WEBSITE", function (
                res) {
                if (res.code != 200) {
                    layer.msg("拓展检测错误：" + res.msg);
                } else {

                    var data = res.data;
                    var content = `
                    <div style="padding: 30px; line-height: 25px; background-color: #393D49; color: #fff; font-weight: 300;">
                        拓展名称：` + data.NAME + `
                        <br>
                        拓展版本：` + data.VERSION + `
                        <br>
                        拓展作者：` + data.AUTHOR + `
                        <br>
                    </div>
                        `

                    layer.open({
                        type: 1,
                        title: "拓展 [ " + data.NAME + " ] 上传成功！",
                        closeBtn: false,
                        area: '300px;',
                        shade: 0.8,
                        id: 'LYDEV_EXTUP',
                        resize: false,
                        btn: ['主页', '返回'],
                        btnAlign: 'c',
                        moveType: 1,
                        content: content,
                        success: function (layero) {
                            var btn = layero.find('.layui-layer-btn');
                            btn.find('.layui-layer-btn0').attr({
                                href: data.WEBSITE,
                                target: '_blank'
                            });
                        }
                    });
                }
            }).fail(function (res) {
                res = JSON.parse(res.responseText);
                layer.msg("检测错误：" + res.msg + "！");
                $.get("/@dev/api/delete?ext=" + ext);
            });

            // 如果接口没有错误，必须要返回true，才不会终止上传循环
            return true;
        }
    });
</script>
{% endblock %}